/**
 * 判断循环双链表是否对称
 */
#include <stdio.h>
#include <stdlib.h>

#define bool int
#define true !0
#define false 0

//循环链表结构体定义
typedef struct DNode{
	struct DNode* next;		//后继指针
	struct DNode* prior;	//前驱指针
	int data;				//数据域
}DNode, *DoubleList;


//循环双链表初始化
bool init(DoubleList &list);

//循环链表插入元素(默认采用尾插法)
bool insert(DoubleList &list, int data);

//判断双向循环链表是否对称
bool core(DoubleList &list);

int main()
{
	return 0;
}

bool core(DoubleList &list)
{
	DNode* first_node=list->next;		//定义first_node指针指向双向循环链表的头部
	DNode* last_node=list->prior;		//定义last_node指针指向双向循环链表的尾部
	
	//如果链表中结点数为偶数，则当first_node==last_node时表示双向循环链表遍历结束
	//如果链表中结点数奇数，则当first_node->next==last_node时表示双向循环链表遍历结束
	while(first_node!=last_node && first_node->next!=last_node)
	{
		//如果头遍历结点的值等于尾遍历结点的值，说明当前结点匹配成功
		//头遍历结点后移,尾遍历结点前移,继续判断
		if(first_node->data==last_node->data)
		{
			first_node=first_node->next;
			last_node=last_node->prior;
		} else {		//只要出现一次结点不对称，直接返回false
			return false;
		}
	}
	return true;
}